فرهاد خانلری
کارشناس ارشد شبکه مایکروسافت

آموزش استفاده از SQLCMD با مثالهای کاربردی

قبلاً در توسینسو ایجاد یک پایگاه داده SQL و همچنین جدول و رکورد های آن آموزش داده شده است اما در این مطلب بنده میخواهم این کار ها را از طریق خط فرمان CMD آن هم توسط دستو SQLCMD انجام دهم ، اگر SQL Management Studio روی سیستمتان نصب نیست شما میتوانید ازمحیط دوست داشتنی و پر کاربرد cmd و دستور sqlcmd کار های خود را پیش ببرید

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

اتصال به MS SQL Server از طریق sqlcmd

برای قدم اول باید command prompt رو باز کنیم در خدابیامرز Xp به Run رفته و دستور CMD را تایپ و اینتر میزدیم ، از اون خدابیامرز به بعد از منوی محبوب Start داخل کادر جستجو دستور cmd را تایپ کرده و دکمه Enter را بزنید. (البته این ساده ترین راه ممکنه بود)

ایجاد یک جدول و دیتابیس ساده توسط cmd
وارد شدن به CMD

وقتی وارد CMD شدیم از دستور sqlcmd جهت اتصال به SQL Server استفاده میکنیم این دستور چند سوئیچ دارد که در تصویر زیر به صورت جدولی مختصر آن را آماده کردم(تصویر زیر را ببینید)

اتصال به SQL از طریق sqlcmd

در تصویر فوق مشاهده میشود که میتوان با چه سوئیچ هایی به سرور اتصال پیدا کنیم توضیحات بیشتر را در تصویر فوق و ادامه این مطلب خواهید دید ، همانطور که حتماً با SQL آشنا هستید برای اینکه به سرور مورد نظر بخواهیم وصل شویم باید نام آن را بدانیم به صورت پیشفرض خیلی ها از نام SQLEXPRESS استفاده میکنند ضمناً ممکن است شما برای ورورد به SQL نام کاربری و پسورد در نظر گرفته باشید در تصویر زیر شما توسط دستور SQLCMD به سرور SQLEXPRESS با یوزر اکانت sa و پسوردی که از قبل زدیم به سرور مورد نظر اتصال پیدا میکنیم

اتصال به Microsoft SQL توسط sqlcmd

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

اتصال به دیتا بیس SQL توسط CMD

سوئیچ S– : ما توسط این سوئیچ میتوانیم به سرورمان متصل شویم و اگر از این سوئیچ استفاده نکنیم با خطا مواجه خواهیم شد در روبروی این سوئیچ باید نام یا IP سیستمی که سرور SQL در آن قرار دارد را تایین کنیم ، راه ساده تر این ماجرا این است که پس از تایپ سوئیچ مورد نظر بعد بعد از گذاشتن یک علامت نقطه کلمه SQLEXPRESS را تایپ کنید.

ایجاد Database توسط sqlcmd

میخواهیم توسط دستورات یک Database با نام DBAITPRO ایجاد کنیم سپس یک جدولبه نام WEB داخل آن ایجاد کرده و فیلد هایی را داخل ان به ثبت برسانیم

1> CREATE DATABASE DBAITPRO

با زدن دستور فوق اتوماتیک یک خط به پایین میآید و منتظر دریافت دستور دوم می ماند و دستور بعدی ما GO است که این بانک با این نام ساخته میشود و مجدد به خط اول میرود (تصویر را ببینید)

ایجاد بانک توسط SQLCMD

خب در ادامه میخواهیم به بانک مورد نظر توسط خود برنامه SQL برویم و ببینیم آیا دستور ما کار مورد نظر را انجام داده یا خیر برای این منظور SQL Server 2014 Management Studio را اجرا کرده و مطابق تصویر زیر پایگاه مورد نظر را Connect میکنیم:

وب سایت توسینسو
وب سایت توسینسو

همانطور که فلش ها نشان میدهند میبینیم پایگاه داده ما ایجاد شده و در table ما هیچ جدولی به ثبت نرسیده است میخواهیم توسط همان sqlcmd اقدام به ایجاد جدولی به نام web کنیم.

ایجاد جدول با استفاده از ابزار sqlcmd

برای ایجاد جدول WEB که شامل سه فیلد است بهتر است در ابتدا از ایجاد Database مطمئن شویم دستور زیر این کار را برای ما خواهد کرد:

وب سایت توسینسو

اگر با پیغامی که در تصویر فوق مشاهده میکنید مواجه شدید این به دان معنا است که این Database ایجاد شده و آماده تغییرات است حال میخواهیم جدول WEB را ایجاد کنیم. دستور زیر را مینویسیم:

ایجاد جدول از طریق کامند CMD

جدول ایجاد شده دارای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 تصویر زیر را نگاه کنید:

اضافه کردن record در جدول توسط SQLCMD

پرس و جوی رکوردها با استفاده از sqlcmd

یکی از دستورات ساده پرس و جو را در این مطلب به شما خواهم گفت ، برای اینکه کلیه فیلد های مربوط به ستون های id و name و domainname جدول web را به صورت یکجا نمایش دهد در sqlcmd می توانید از دستور SELECT مطابق تصوی زیر استفاده نمایید.

پرسجو توسط sQLCMD

نحوه Attach کردن دیتا بیس Sql توسط دستور sqlcmd

راه حل های متفاوتی میتونه برای این کار داشته باشیم اما یکی از ساده ترین راه ها و متفاوت با صحبت هایی که در بالا داشتیم به این صورت است که (یک فایل NotePad باز کنید و پس از تایپ دستورات زیر آن را با پسوند Sql ذخیره کنید).

ATTACH کردن دیتا بیس توسط دستور SQLCMD

سپس یک BATCH FILE (یک فایل NOTEPAD را با پسوند BAT ذخیره کنید) ایجاد میکنیم و دستور زیر را داخل آن تایپ و با یک نامی به دلخواه ذخیره میکنیم سپس با اجرای فایل bat دیتابیس به Sql Server مورد نظر Attach میشود .

sqlcmd -S  ServerName\InstanceName   - i D:\ آدرس فایل

فرهاد خانلری
فرهاد خانلری

کارشناس ارشد شبکه مایکروسافت

فرهاد خانلری ، مدرس شبکه و برنامه نویسی مبتنی بر زیرساخت های مایکروسافت ، سابقه فعالیت در موسسات و مراکز دولتی در قالب پروژه ، مشاوره و تدریس ، برنامه نویسی ++C ، سی شارپ و دات نت ، متخصص و مدرس شبکه های مبتنی بر سیستم عاملهای مایکروسافت و سرویس های مربوطه ، سخت افزار و ...

نظرات