এসকিউএল সার্ভার 2012: কমান্ড লাইন থেকে স্ক্রিপ্ট তৈরি করুন


19

আমি এসকিউএল সার্ভার 2012 চালাচ্ছি।

এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে কোনও ডাটাবেজে ডান ক্লিক করার পরে টাস্কগুলি নির্বাচন করতে এবং স্ক্রিপ্টগুলি উত্পন্ন করার বিকল্প রয়েছে।

কোনওভাবে কমান্ড লাইনের মাধ্যমে সেটিকে স্বয়ংক্রিয় করার কোনও উপায় আছে?

আমি একটি স্ক্রিপ্ট তৈরি করতে চাই যাতে পুরো ডেটা বেসের স্কিমা এবং ডেটা অন্তর্ভুক্ত থাকে।

মত সরঞ্জাম ScriptDBএবং sqlpubwiz.exeসমস্ত এসকিউএল সার্ভার 2005 লক্ষ্য করে বলে মনে হচ্ছে। এসকিউএল সার্ভার 2012 কী?

উত্তর:


20

পাওয়ারশেল ব্যবহার করা সবচেয়ে ভাল - আপনি যদি এটি ঘন ঘন ব্যবহার করতে থাকেন। আপনি পাওয়ারশেল এবং এসএমও সহ স্বয়ংক্রিয় স্ক্রিপ্ট-জেনারেশনটি উল্লেখ করতে পারেন ।

এছাড়াও, পাওয়ারশেলের সাথে কাজ করার সময় এসকিউএল সার্ভার পাওয়ারশেল এক্সটেনশনগুলি (এসকিউএলপিএসএক্স) বেশ মূল্যবান। সমস্ত মডিউলগুলিতে সহায়তা ফাইল যেমন গেট-এসকিএলস্ক্রিপ্টার রয়েছে

Get-SqlDatabase -dbname database1 -sqlserver server | Get-SqlTable | Get-SqlScripter | Set-Content -Path D:\scripts\script.sql
Get-SqlDatabase -dbname database1 -sqlserver server | Get-SqlStoredProcedure | Get-SqlScripter
Get-SqlDatabase -dbname database1 -sqlserver server | Get-SqlView | Get-SqlScripter

তৃতীয় পক্ষের সরঞ্জামগুলির জন্য, চেক আউট করার জন্য অত্যন্ত পরামর্শ দিন (সেখানে অনেকগুলি তৃতীয় পক্ষের সরঞ্জাম রয়েছে, তবে নীচে আমি ব্যবহার করেছি এবং সেগুলি দুর্দান্ত):


10

মাইক্রোসফ্ট থেকে তারা রাজ সম্প্রতি ঘোষণা করেছিলেন যে মাইক্রোসফ্ট এসকিউএল টিম টি-এসকিউএল স্ক্রিপ্টগুলি তৈরি করতে কমান্ড লাইন সরঞ্জামগুলির একটি সেট প্রকাশ করেছে যা আপনি যা বলেছেন ঠিক তেমনটি দেখাবে:

এমএস স্কুয়েল-scripter

এসএসএমএস-এ বহুল ব্যবহৃত জেনারেট স্ক্রিপ্টস উইজার্ড অভিজ্ঞতার সমান মাল্টিপ্লাটফর্ম কমান্ড লাইন সমেত এমএসকিএল-স্ক্রিপ্টার।

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

এমএসকিউএল-স্ক্রিপ্টারটি পাইথন ব্যবহার করে নির্মিত এবং নতুন অ্যাজুর সিএলআই ২.০ সরঞ্জামগুলির ব্যবহারযোগ্যতা নীতিগুলি অন্তর্ভুক্ত করে। সোর্স কোডটি https://github.com/Mic Microsoft/sql-xplat-cli- এ গিথুব-এ পাওয়া যাবে এবং আমরা আপনার অবদান ও অনুরোধগুলি স্বাগত জানাই!

ব্যবহারের কয়েকটি উদাহরণ:

অ্যাডভেঞ্চারওয়ার্কস ডাটাবেসে সমস্ত ডাটাবেস অবজেক্টের জন্য ডিডিএল স্ক্রিপ্ট তৈরি করুন (স্ট্যান্ডআউটে আউটপুট)

$ mssql-scripter -S localhost -d AdventureWorks -U sa

অ্যাডভেঞ্চার ওয়ার্কস ডাটাবেসের সমস্ত টেবিলের জন্য সমস্ত ডাটাবেস অবজেক্ট এবং ডিএমএল স্ক্রিপ্টস (INSERT বিবৃতি) জন্য ডিডিএল স্ক্রিপ্ট তৈরি করুন এবং স্ক্রিপ্টটি কোনও ফাইলে সংরক্ষণ করুন

$ mssql-scripter -S localhost -d AdventureWorks -U sa schema-and-data  > ./output.sql

9

আমি স্কিমাজেন নামে একটি ওপেন সোর্স কমান্ড লাইন ইউটিলিটি লিখেছি যা এটি করে। এটি ম্যানেজমেন্ট স্টুডিও থেকে স্ক্রিপ্ট করার চেয়ে অনেক দ্রুত এবং এর আউটপুটটি আরও সংস্করণ নিয়ন্ত্রণ বান্ধব। এটি স্কিমা এবং ডেটা উভয়ই স্ক্রিপ্টিং সমর্থন করে।

স্ক্রিপ্ট চালাতে জেনারেট করতে:

স্কিমাজেন.এক্সপি স্ক্রিপ্ট - সার্ভার লোকালহোস্ট - ডেটাবেস ডিবি - স্ক্রিপ্টডির সি: \ সামির

এরপরে স্ক্রিপ্টগুলি থেকে ডাটাবেসটি পুনরায় তৈরি করতে:

স্কিমাজেন.এক্সই - সার্ভার লোকালহোস্ট তৈরি করুন - ডেটাবেস ডিবি - স্ক্রিপ্টডির সি: \ সামির

0

আপনি এক্সএসকিউএল স্কিমা তুলনা এবং এক্সএসকিউএল ডেটা তুলনার কমান্ড লাইন সংস্করণ ব্যবহার করতে পারেন । কমান্ড লাইন সংস্করণগুলির সাহায্যে আপনি পর্যায়ক্রমিক ডেটা এবং স্কিমা তুলনা একটি খালি ডাটাবেসের সাথে নির্ধারণ করতে পারেন এবং স্ক্র্যাচ থেকে আপনার ডাটাবেসের সর্বশেষ সংস্করণটির যথাযথ প্রতিরূপ তৈরি করতে এটির সর্বদা স্ক্রিপ্ট রয়েছে।

প্রকাশ: আমি এক্সএসকিউএল সম্পর্কিত।


0

কেবলমাত্র একটি আপডেট: এসকিউএল সার্ভার পাওয়ারশেল মডিউলগুলির বর্তমান সংস্করণগুলিতে (এসকিউএল সার্ভার ২০১৪ এবং তারপরে, আমি বিশ্বাস করি SS এসএসএমএস ১ on তে পরীক্ষিত), এই বিকল্পগুলির বেশিরভাগটি হ'ল দেশীয় কমান্ড এবং পদ্ধতি।

উদাহরণস্বরূপ, আপনি গেট-এসকিএলডিটাবেস এবং .Script () এবং .EnumScript () এর মতো পদ্ধতিগুলি ব্যবহার করতে পারেন এটি সত্যিই দরকারী এবং সহজ, বিশেষত যদি আপনি আরও দানাদার পদ্ধতির (নির্দিষ্ট সারণী এবং অন্যান্য বস্তু) চান want

উদাহরণস্বরূপ, এটি ব্যবহারকারীর সংজ্ঞায়িত ফাংশনগুলির জন্য CREATE স্ক্রিপ্ট তৈরি করবে এবং ফাইলটিতে এটি সংরক্ষণ করবে:

$Database = Get-SqlDatabase -ServerInstance $YourSqlServer -Name $YourDatabaseName

$MyFuncs = $Database.UserDefinedFunctions | Where Schema -eq "dbo"
$MyFuncs.Script() | Out-File -FilePath ".\SqlScripts\MyFunctions.sql"

আপনি যদি স্ক্রিপ্ট ডেটা এবং সূচী, কী, ট্রিগার ইত্যাদির মতো উপাদানগুলি করতে চান তবে আপনাকে স্ক্রিপ্টিং বিকল্পগুলি নির্দিষ্ট করতে হবে:

$scriptOptions = New-Object -TypeName Microsoft.SqlServer.Management.Smo.ScriptingOptions

$scriptOptions.NoCollation = $True
$scriptOptions.Indexes = $True
$scriptOptions.Triggers = $True
$scriptOptions.DriAll = $True
$scriptOptions.ScriptData = $True

$Database.Tables.EnumScript($scriptOptions) | Out-File -FilePath ".\AllMyTables.sql"

নোট করুন যে স্ক্রিপ্ট () পদ্ধতি স্ক্রিপ্টিং ডেটা সমর্থন করে না। টেবিলগুলির জন্য এনামস্ক্রিপ্ট () ব্যবহার করুন।

একটি একক টেবিল :

($Database.Tables | Where Name -eq "MyTableName").EnumScript($scriptOptions)

আপনার সমস্ত দর্শন, প্রতিটি দর্শন অনুযায়ী একটি ফাইল সংরক্ষণ করুন , ড্রপ এবং ক্রিপ স্ক্রিপ্ট:

ForEach ($view in $($Database.Views | Where Schema -eq "dbo")) {

    "`nIF OBJECT_ID('$($view.Name)') IS NOT NULL DROP VIEW $($view.Name);`n`n" | Out-File -FilePath ".\SqlScripts\$($view.Name).sql"    
    $view.Script() | Out-File -FilePath ".\SqlScripts\$($view.Name).sql" -Append
}

আশাকরি এটা সাহায্য করবে.

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