در نمونه مدیریت Azure SQL ، بیشتر ، اما همه ویژگی های عامل SQL Server در حال حاضر پشتیبانی نمی شوند. برای جزئیات بیشتر به Azure SQL مدیریت شده T-SQL از SQL Server مراجعه کنید.
SQL Server Agent به شما امکان می دهد از نشانه ها در اسکریپت های مرحله شغلی Transact-SQL استفاده کنید. استفاده از نشانه ها هنگام نوشتن مراحل شغلی خود ، همان انعطاف پذیری را به شما می دهد که متغیرها هنگام نوشتن برنامه های نرم افزاری ارائه می دهند. بعد از اینکه یک توکن را در یک اسکریپت مرحله کار وارد کردید ، SQL Server Agent جایگزین توکن در زمان اجرا می شود ، قبل از اینکه مرحله کار توسط زیر سیستم Transact-SQL اجرا شود.
درک استفاده از نشانه ها
هر کاربر ویندوز با مجوزهای نوشتن در ورود به سیستم ویندوز می تواند به مراحل شغلی که توسط SQL Server Agent Agts یا هشدارهای WMI فعال می شوند ، دسترسی پیدا کنند. برای جلوگیری از این خطر امنیتی ، نشانه های عامل SQL Server که می توانند در مشاغل فعال شده توسط هشدارها استفاده شوند ، به طور پیش فرض غیرفعال می شوند. این نشانه ها عبارتند از: A-DBN ، A-SVR ، A-ERR ، A-SEV ، A-MSG. و WMI (خاصیت). توجه داشته باشید که در این نسخه ، استفاده از نشانه ها به همه هشدار داده می شود.
اگر نیاز به استفاده از این نشانه ها دارید ، ابتدا اطمینان حاصل کنید که فقط اعضای گروه های امنیتی ویندوز معتبر ، مانند گروه Administrators ، مجوزهای مربوط به ورود به سیستم رایانه ای را که SQL Server در آن قرار دارد ، می نویسند. سپس با کلیک راست بر روی SQL Server Agent در Object Explorer ، Properties را انتخاب کنید و در صفحه سیستم هشدار ، گزینه های جایگزین را برای همه پاسخ های شغلی برای هشدارها انتخاب کنید تا این نشانه ها فعال شود.
SQL Server Agent Token جایگزینی ساده و کارآمد است: SQL Server Agent جایگزین یک مقدار رشته واقعی تحت اللفظی برای نشانه می شود. همه نشانه ها حساس به مورد هستند. مراحل شغلی شما باید این موضوع را در نظر گرفته و به درستی از نشانه هایی که استفاده می کنید نقل کنید یا رشته جایگزینی را به نوع داده صحیح تبدیل کنید.
به عنوان مثال ، شما ممکن است از جمله زیر برای چاپ نام پایگاه داده در یک مرحله کار استفاده کنید:
چاپ نام پایگاه داده N'Current $ (Escape_squote (A-DBN)) است.
در این مثال ، ماکرو Escape_squote با نشانه A-DBN درج می شود. در زمان اجرا ، نشانه A-DBN با نام پایگاه داده مناسب جایگزین می شود. کلان فرار از هر علامت نقل قول واحد فرار می کند که ممکن است سهواً در رشته جایگزینی توکن منتقل شود. SQL Server Agent یک علامت نقل قول واحد را با دو علامت نقل قول واحد در رشته نهایی جایگزین می کند.
به عنوان مثال ، اگر رشته ای که برای جایگزینی Token منتقل شده است AdventureWorks2012'Select نسخه - دستور اجرا شده توسط مرحله کار SQL Server Agent خواهد بود:
چاپ نام پایگاه داده N'Current AdventureWorks2012'Select نسخه -'؛
در این حالت ، بیانیه درج شده ، Select @نسخه ، اجرا نمی شود. در عوض ، علامت نقل قول اضافی باعث می شود که سرور عبارت را به عنوان یک رشته تجزیه کند. اگر رشته جایگزینی توکن حاوی یک علامت نقل قول واحد نباشد ، هیچ کاراکتر فرار نمی شود و مرحله کار حاوی توکن مطابق آنچه در نظر گرفته شده است اجرا می شود.
برای اشکال زدایی استفاده از نشانه ها در مراحل شغلی خود ، از بیانیه های چاپی مانند چاپ n '$ (Escape_squote (SQLDIR)) استفاده کنید و خروجی مرحله کار را در یک پرونده یا جدول ذخیره کنید. برای مشخص کردن پرونده یا جدول خروجی مرحله کار از صفحه پیشرفته کادر گفتگوی Properties Properties استفاده کنید.
نشانه های عامل سرور SQL و ماکرو
جداول زیر لیست نشانه ها و ماکروهایی را که عامل سرور SQL از آن پشتیبانی می کند ، لیست و توصیف کنید.
نشانه های عامل سرور SQL
| نشانه | شرح |
| (A-DBN) | نام پایگاه داده. اگر کار با هشدار اجرا شود ، مقدار نام پایگاه داده به طور خودکار این توکن را در مرحله کار جایگزین می کند. |
| (A-SVR) | نام ارائهکننده. اگر کار با هشدار اجرا شود ، مقدار نام سرور به طور خودکار این توکن را در مرحله کار جایگزین می کند. |
| (a-err) | شماره خطااگر کار با هشدار اجرا شود ، مقدار خطا به طور خودکار این توکن را در مرحله کار جایگزین می کند. |
| (a-sev) | شدت خطااگر کار با هشدار انجام شود ، مقدار شدت خطا به طور خودکار این نشانه را در مرحله کار جایگزین می کند. |
| (A-MSG) | پیام پیاماگر کار با هشدار اجرا شود ، مقدار متن پیام به طور خودکار این توکن را در مرحله کار جایگزین می کند. |
| (اسم شغل) | نام شغل. این نشانه فقط در SQL Server 2016 و بالاتر در دسترس است. |
| (نام خانوادگی) | نام مرحله. این نشانه فقط در SQL Server 2016 و بالاتر در دسترس است. |
| (تاریخ) | تاریخ فعلی (با فرمت yyyymmdd). |
| (Inst) | نام نمونهبرای یک نمونه پیش فرض ، این نشانه دارای نام نمونه پیش فرض است: MSSQLSERVER. |
| (شناسه کار) | شناسه کار. |
| (ماچ) | نام کامپیوتر. |
| (MSSA) | نام سرویس SQLSERVERAGENT. |
| (OSCMD) | پیشوند برنامه مورد استفاده برای اجرای مراحل شغلی cmdexec. |
| (sqldir) | دایرکتوری که در آن SQL Server نصب شده است. به طور پیش فرض ، این مقدار C: Files Program Microsoft SQL Server MSSQL است. |
| (sqllogdir) | توکن جایگزینی برای مسیر پوشه ورود به سیستم خطای SQL Server - به عنوان مثال ، $ (Escape_squote (sqllogdir)). این نشانه فقط در SQL Server 2014 و بالاتر در دسترس است. |
| (STEPCT) | تعداد تعداد دفعاتی که این مرحله اجرا شده است (به استثنای آزمایشات). می تواند توسط دستور مرحله برای خاتمه یک حلقه چند مرحله ای استفاده شود. |
| (StepID) | شناسه مرحله |
| (SRVR) | نام رایانه ای که سرور SQL را اجرا می کند. اگر نمونه SQL Server به عنوان مثال نامگذاری شده باشد ، این شامل نام نمونه است. |
| (زمان) | زمان فعلی (در قالب HHMMSS). |
| (strttm) | زمان (در قالب HHMMSS) که کار شروع به اجرای آن کرد. |
| (strtdt) | تاریخ (در قالب Yyyymmdd) که کار شروع به اجرای آن کرد. |
| (WMI (خاصیت)) | برای مشاغلی که در پاسخ به هشدارهای WMI اجرا می شوند ، ارزش ملک مشخص شده توسط ملک. به عنوان مثال ، $ (WMI (DatabaseName)) مقدار خاصیت پایگاه داده را برای رویداد WMI که باعث شده هشدار اجرا شود ، فراهم می کند. |
SQL Server Agent Escape Macros
| فرار ماکرو | شرح |
| $ (Escape_squote (token_name)) | در رشته جایگزینی توکن ، علائم نقل قول واحد (') را فرار می کند. یک علامت نقل قول واحد را با دو علامت نقل قول واحد جایگزین می کند. |
| $ (Escape_dquote (token_name)) | در رشته تعویض توکن ، علائم نقل قول دو برابر را فرار می کند. یک علامت نقل قول دو برابر را با دو علامت نقل قول دو برابر جایگزین می کند. |
| $ (Escape_rbracket (token_name)) | براکت های راست (]) را در رشته جایگزینی توکن فرار می کند. یک براکت راست را با دو براکت راست جایگزین می کند. |
| $ (Escape_none (token_name)) | توکن را بدون فرار از هر کاراکتر در رشته جایگزین می کند. این ماکرو برای پشتیبانی از سازگاری به عقب در محیط هایی که رشته های جایگزینی توکن فقط از کاربران قابل اعتماد انتظار می رود ارائه شده است. برای اطلاعات بیشتر ، بعداً در این موضوع به "به روزرسانی مراحل کار برای استفاده از ماکرو" مراجعه کنید. |
به روزرسانی مراحل شغلی برای استفاده از ماکرو
در جدول زیر نحوه دستیابی به توکین توسط SQL Server Agent توضیح داده شده است. برای روشن یا خاموش کردن تعویض توکن هشدار ، بر روی SQL Server Agent در Object Explorer کلیک راست کنید ، Properties را انتخاب کنید و در صفحه سیستم هشدار ، نشانه های جایگزینی را برای همه پاسخ های شغلی به کادر انتخاب هشدار انتخاب یا پاک کنید.
| نحو | تعویض توکن هشدار در | تعویض توکن هشدار |
| فرار کلان استفاده شده | تمام نشانه های موجود در مشاغل با موفقیت جایگزین می شوند. | نشانه های فعال شده توسط هشدارها جایگزین نمی شوند. این نشانه ها A-DBN ، A-SVR ، A-ERR ، A-SEV ، A-MSG و WMI (خاصیت) هستند. سایر نشانه های استاتیک با موفقیت جایگزین می شوند. |
| بدون فرار از کلان استفاده نشده است | هر شغل حاوی نشانه ها شکست می خورند. | هر شغل حاوی نشانه ها شکست می خورند. |
نمونه های به روزرسانی نحو
الف) استفاده از نشانه ها در رشته های غیر توی
مثال زیر نحوه به روزرسانی یک اسکریپت ساده بدون لانه را با ماکرو فرار مناسب نشان می دهد. قبل از اجرای اسکریپت به روزرسانی ، اسکریپت مرحله کار زیر از یک توکن مرحله کار برای چاپ نام پایگاه داده مناسب استفاده می کند:
چاپ نام پایگاه داده N'Current $ (A-DBN) است.
پس از اجرای اسکریپت به روزرسانی ، یک ماکرو Escape_none قبل از نشانه A-DBN درج می شود. از آنجا که از علائم نقل قول واحد برای تعیین رشته چاپ استفاده می شود ، شما باید با وارد کردن کلان Escape_squote به شرح زیر ، مرحله کار را به روز کنید:
چاپ نام پایگاه داده N'Current $ (Escape_squote (A-DBN)) است.
ب - استفاده از نشانه ها در رشته های تو در تو
در اسکریپت های مرحله شغلی که در آن از نشانه ها در رشته ها یا بیانیه های تو در تو استفاده می شود ، بیانیه های تو در تو باید قبل از قرار دادن ماکروهای فرار مناسب ، به عنوان چندین بیانیه بازنویسی شوند.
به عنوان مثال ، مرحله شغلی زیر را در نظر بگیرید ، که از A-MSG Token استفاده می کند و با یک کلان فرار به روز نشده است:
چاپ n'print '' $ (a-msg) '' ؛
پس از اجرای اسکریپت به روزرسانی ، یک ماکرو Escape_none با نشانه وارد می شود. با این حال ، در این حالت ، شما باید اسکریپت را بدون استفاده از لانه سازی به شرح زیر بازنویسی کنید و ماکرو Escape_squote را وارد کنید تا به درستی از محدود کننده هایی که ممکن است در رشته جایگزینی توکن منتقل شوند ، فرار کنید:
همچنین در این مثال توجه داشته باشید که عملکرد Quotename شخصیت نقل قول را تنظیم می کند.
ج - استفاده از توکن با ماکرو Escape_none
مثال زیر بخشی از یک اسکریپت است که job_id را از جدول sysjobs بازیابی می کند و از نشانه jobid برای جمع آوری متغیر jobid استفاده می کند ، که قبلاً در اسکریپت به عنوان یک نوع داده باینری اعلام شد. توجه داشته باشید که از آنجا که برای انواع داده های باینری هیچ محدودیتی لازم نیست ، از ماکرو Escape_none با توکن JobID استفاده می شود. نیازی به به روزرسانی این مرحله کار پس از اجرای اسکریپت به روزرسانی نیست.
بازار رمزارزها...
ما را در سایت بازار رمزارزها دنبال می کنید
برچسب :
نویسنده : محمود کیانوش
بازدید : <-PostHit->
تاريخ : چهارشنبه
16 فروردين
1402 ساعت: 16:52