का उपयोग कर एसक्यूएल स्क्रिप्ट उत्पन्न करने के लिए कैसे करें मेरे डेटाबेस में टेबल, विचार और सभी हैं। और मुझे स्वचालित रूप से सभी डीडीएल के लिए एसक्यूएल स्क्रिप्ट उत्पन्न करने का एक तरीका चाहिए। डेटा की कोई ज़रूरत नहीं है।एसएमओ स्क्रिप्टर
एफके बाधाएं हैं इसलिए टेबल निर्माण स्क्रिप्ट को ठीक से आदेश दिया जाना चाहिए। कुछ विचार एक और दृश्य का उपयोग करते हैं, इसलिए निर्माण स्क्रिप्ट को भी ठीक से आदेश दिया जाना चाहिए।
MSDN Blog पर प्रस्तुत एक स्क्रिप्ट से शुरू, मैं निम्नलिखित है:
function Generate-SqlScript
{
param(
[string]$srvname,
[string]$database,
[string]$ScriptOutputFileName
)
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | out-null
$srv = New-Object ("Microsoft.SqlServer.Management.SMO.Server") ($srvname)
$allUrns = @()
$allUrns += $srv.Databases[$database].Tables | foreach { $_.Urn}
$allUrns += $srv.Databases[$database].Views | foreach { $_.Urn}
$scriptingOptions = New-Object ("Microsoft.SqlServer.Management.SMO.ScriptingOptions")
$scriptingOptions.WithDependencies = $true
$scriptingOptions.AllowSystemObjects = $false
$scriptingOptions.ToFileOnly = $true
$scriptingOptions.Permissions = $true
$scriptingOptions.FileName = "$ScriptOutputFileName"
$scripter = New-Object ("Microsoft.SqlServer.Management.SMO.Scripter") ($srv)
$scripter.Options = $scriptingOptions;
$scripter.Script($allUrns)
}
Generate-SqlScript .\sqlexpress <MyDbName> <FilePath>
अब समस्या है, WithDependencies विकल्प इसकी निर्भर टेबल, जो पहले से ही पहले शामिल किया गया था शामिल करने के लिए दृश्य स्क्रिप्ट का कारण बनता है। अगर मैं निर्भरता विकल्प निकालता हूं, जेनरेट की गई स्क्रिप्ट उचित ऑर्डरिंग को प्रतिबिंबित नहीं करती है।
तो अंतिम परिणाम में सभी जानकारी शामिल है, लेकिन यह चलाने योग्य नहीं है। यह एक त्रुटि उठाता है क्योंकि यह तालिका को दो बार नहीं बना सकता है।
मुझे इसके लिए एसएमओ स्क्रिप्टर के बारे में बात करने में बहुत सारी पोस्ट मिलती हैं, इसलिए मुझे लगता है कि मुझे कुछ याद आना चाहिए। या ... क्या उन सभी पदों ने इस समस्या को याद किया?
निर्भरता दो चीजें करता है: 1) यह निर्भरता द्वारा लिपियों को फिर से ऑर्डर करता है। 2) इसमें आश्रित तत्व स्वचालित रूप से शामिल हैं। अगर मैं निर्भरता से बाहर निकलता हूं, तो मुझे # 2 से कोई समस्या नहीं होगी लेकिन मुझे # 1 प्राप्त करने के लिए हाथ-लिखने की आवश्यकता है। यह करने योग्य है, बस यह सुनिश्चित करना चाहते हैं कि जो भी ऐसा करना चाहता है, उसके लिए उम्मीद सही हो। – kennethc