স্কিমা এবং ডেটা বের করার জন্য আমরা এসএসএমএস স্ক্রিপ্ট জেনারেশনের সংমিশ্রণটি ব্যবহার করে শেষ করেছি এবং তারপরে আমাদের নিজস্ব ডাটাবেস সরঞ্জাম ব্যবহার করুন যা স্ক্রিপ্টগুলিতে কীওয়ার্ড পার্সিং এবং টোকেন ভিত্তিক প্রতিস্থাপনের অনুমতি দেয়। এটি স্ক্রিপ্টগুলি কেবল একবার প্রয়োগ করা হয়েছে তা নিশ্চিত করে।
কেন?
- আমাদের এসকিউএল সার্ভার 2000, 2005 এবং 2008 এ ইনস্টলেশনগুলি সমর্থন করতে হবে এবং সংস্করণগুলির মধ্যে ডেটা ধরণের পরিবর্তন রয়েছে যেমন 2005+ এর এনভারচার (সর্বাধিক) রয়েছে, যেখানে 2000 কেবলমাত্র নেক্সটকে সমর্থন করে। সুতরাং আমাদের স্ক্রিপ্টগুলি একটি টোকেন ব্যবহার করে এবং ডিবি পছন্দ অনুসারে সঠিক ধরণের সাথে প্রতিস্থাপন করে।
- কিছু স্ক্রিপ্ট কার্যকর করার জন্য মৃত্যুদন্ড কার্যকর হওয়ার পরে অপেক্ষা সময়ের প্রয়োজন, যেমন আমরা খুঁজে পেলাম যদি আপনি কোনও স্ক্রিপ্টের মাধ্যমে একটি নতুন ডাটাবেস তৈরির পরে কয়েক সেকেন্ড অপেক্ষা না করেন তবে এসকিউএল সার্ভার কখনও কখনও ব্যর্থ হতে পারে (কারণ এটি ডিবি তৈরির সময় পায় নি) ফাইলগুলি) যখন এটি সারণী ইত্যাদি তৈরি করতে শুরু করে etc.
- আমরা কী স্ক্রিপ্টগুলি কার্যকর করা হয়েছিল এবং কখন তার ইতিহাস বজায় রাখতে চেয়েছিলাম।
- আমরা আমাদের উইক্স এমএসআই ইনস্টলারকে সংযোগের স্ট্রিং এবং শংসাপত্রগুলি নির্দিষ্ট করার অনুমতি দিতে চেয়েছি এবং এগুলি স্ক্রিপ্টগুলিতে পাস করার জন্য কিছু উপায়ের প্রয়োজন ছিল, তাই আবারও টোকেন এবং কিছু শর্তযুক্ত যুক্তি ব্যবহার করে।
উদাহরণ স্ক্রিপ্ট (ব্রেভিটির জন্য সম্পাদিত)
CREATE DATABASE [$Database$]
GO
EXEC sp_dbcmptlevel [$Database$], $CompatabilityLevel$
GO
USE [$Database$]
GO
IF '1'!='$IntegratedSecurity$'
BEGIN
CREATE LOGIN [$Login$] WITH PASSWORD=N'$Password$', DEFAULT_DATABASE=[$Database$]
CREATE USER [$User$] FOR LOGIN [$Login$]
EXEC sp_addrolemember N'db_owner', N'$User$'
END
GO