আমি কি স্ক্রিপ্টের ভিতরে থেকে এসকিউএলসিএমডি মোড সক্ষম করতে পারি?


17

কোনও নির্দেশকের মতো কিছু আছে যা আমি এসকিউএমসিএমডি মোড সক্ষম / অক্ষম করতে এসএসএমএসকে বাধ্য করার জন্য একটি স্ক্রিপ্টে ব্যবহার করতে পারি?

উত্তর:


17

যেমনটি বলা হয়েছে, কোনও উপায় নেই।

তবে, আমরা যা করি তা হ'ল এসকিউএলসিএমডি মোড চালু আছে কিনা তা নির্ধারণ করার জন্য আমাদের স্ক্রিপ্ট শিরোনামটিতে একটি দ্রুত চেক অন্তর্ভুক্ত করা (এবং স্ক্রিপ্টটি সমাপ্ত না করে):

:setvar DatabaseName "MyDatabase"
GO
IF ('$(DatabaseName)' = '$' + '(DatabaseName)')
    RAISERROR ('This script must be run in SQLCMD mode. Disconnecting.', 20, 1) WITH LOG
GO
-- The below is only run if SQLCMD is on, or the user lacks permission to raise fatal errors
IF @@ERROR != 0
    SET NOEXEC ON
GO

PRINT 'You will not see this unless SQLCMD mode is on'
-- Rest of script goes here

GO
SET NOEXEC OFF
GO

তীব্রতা 20 ব্যবহৃত হওয়ার কারণ রয়েছে, এটি তত্ক্ষণাত্ সংযোগটি মেরে ফেলবে, স্ক্রিপ্ট কোডটি আর চালানো থেকে রোধ করবে, এমনকি GOস্ক্রিপ্টে পরে ব্যাচ টার্মিনেটর থাকলেও।

তীব্রতা 20-24 :

সিস্টেমের সমস্যাগুলি ইঙ্গিত করুন এবং মারাত্মক ত্রুটি, যার অর্থ একটি বিবৃতি বা ব্যাচ চালাচ্ছে এমন ডেটাবেস ইঞ্জিন টাস্ক আর চলছে না। টাস্কটি কী ঘটেছিল এবং তারপরে সমাপ্ত হয় সে সম্পর্কে তথ্য রেকর্ড করে। বেশিরভাগ ক্ষেত্রে, ডেটাবেস ইঞ্জিনের উদাহরণের সাথে অ্যাপ্লিকেশন সংযোগটিও শেষ হতে পারে । সমস্যাটির উপর নির্ভর করে যদি এটি ঘটে থাকে তবে অ্যাপ্লিকেশনটি আবার সংযোগ করতে সক্ষম হবে না।

এই ব্যাপ্তির ত্রুটি বার্তাগুলি একই ডাটাবেসে ডেটা অ্যাক্সেসের সমস্ত প্রক্রিয়াগুলিকে প্রভাবিত করতে পারে এবং ইঙ্গিত করে যে কোনও ডাটাবেস বা বস্তু ক্ষতিগ্রস্থ হয়েছে। 19 থেকে 24 এর মধ্যে তীব্রতার স্তরের ত্রুটি বার্তাগুলি ত্রুটি লগতে লেখা হয়।


এসএমএসের জন্য প্রথম 2 টি লাইন যথেষ্ট হবে এবং 2000 কোয়ারি অ্যানালাইজারের জন্য এটি কাজ করে তবে বার্তাটি প্রদর্শিত হয় না।
bernd_k

তবে স্ক্রিপ্টটি কি কেবল পরবর্তী জিও থেকে চালানো চালিয়ে যাবে না?
ড্যান নোলান

আমি এসএসএমএস ২০০৮ আর আর ব্যবহার করছি এবং সেখানে দুটি লাইন তৈরি হচ্ছে: মেলডাং ১০২, এবেইন ১৫, স্ট্যাটাস ১, জেইল ১: '' এর নিকটে ভুল সিনট্যাক্স। এসকিউএল সার্ভার 2000 ক্যোয়ারী অ্যানালাইজার ব্যবহার করে আপনাকে রেসার ব্যবহার করতে হবে।
bernd_k

4
এখানে উল্লিখিত হিসাবে , আপনি SET NOEXEC ONস্ক্রিপ্টের অন্য কোনও কিছু চলমান থেকে রোধ করতে একটি অতিরিক্ত সুরক্ষা ব্যবস্থা হিসাবে সেট করতে পারেন ।
ইয়াহু সিরিয়াস

হুম, এসকিউএলসিএমডি মোড চালু আছে কিনা তা অনুসন্ধান করার জন্য এটি এসকিউএলসিএমডি মোডটি ব্যবহার করছে ... আমি বলব যে এসকিউএলসিএমডি মোড বন্ধ থাকাকালীন এটি সঠিকভাবে কাজ করবে না, যেমন @ বার্নড_কে অভিজ্ঞতা হয়েছে। তবে, যদি: সেটওয়ার এসকিউএল-এর জন্য সরানো / প্রতিস্থাপন করা হয়, তবে এটি কার্যকর হবে।
ওক_3260548

7

না।

তবে আপনি সর্বদা এসকিউএলসিএমডি মোডে চালাতে পারেন এবং এতে টি-এসকিউএল রাখতে পারেন

এসকিউএলসিএমডি কমান্ড এবং লেনদেন-এসকিউএল-এর মধ্যে একটি স্পষ্ট পার্থক্য তৈরি করতে, সমস্ত এসকিউএলসিএমডি কমান্ডগুলি, একটি কোলন (:) এর সাথে উপসর্গ করা প্রয়োজন।


এটি কি এসকিউএল সার্ভার 2012/2014/2016 এর জন্য বৈধ?
জন ওরফে হট

1
@ হট 2 ইউজ: হ্যাঁ, আমি এটি 2014/2016
জিবিএন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.