मुझे एक पावरहेल स्क्रिप्ट निष्पादित करने की आवश्यकता है जो डेटाबेस बनाने के लिए SQL स्क्रिप्ट निष्पादित करता है। मैं इस तरह से PowerShell आदेश exec मेरी जानकारी के आधार पर:Invoke-Sqlcmd, इनपुटफाइल, और वेरिएबल
Init.ps1
$DATABASEFILENAME = "C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008INSTANCE\MSSQL\DATA\myDB.mdf"
$DATABASELOGNAME = "C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008INSTANCE\MSSQL\DATA\myDB_log.ldf"
$DBUSEROWNER = "domain\spsetup"
CreateDatabase.ps1
try {
$createDatabaseScript = ($scriptsFolder,$eachRelease,$DeployEnvironment,"Config" -join "\") + "\JM SiteRequest Database.sql"
$sqlVariable = "DATABASEFILENAME = '$DATABASEFILENAME'", "DATABASELOGNAME = '$DATABASELOGNAME'", "DBUSEROWNER = '$DBUSEROWNER'"
Invoke-Sqlcmd -ServerInstance "$MySQLServer" -InputFile "$createDatabaseScript" -ErrorAction Stop -Variable $sqlVariable
}
catch [Exception] {
Write-Error "Database error: $_.Exception"
}
SQL स्क्रिप्ट
CREATE DATABASE [SiteRequestDB] ON PRIMARY
(NAME = N'SiteRequestDB', FILENAME = N'$(DATABASEFILENAME)' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB) LOG ON
(NAME = N'SiteRequestDB_log', FILENAME = N'$(DATABASELOGNAME)' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
मैंने @ चाड मिलर के सुझाव के रूप में $ sqlVariable को अपडेट किया। तो समस्या वहां थी। अब मुझे यह त्रुटि मिली है: डेटाबेस त्रुटि बनाना: डेटाबेस त्रुटि: कोई ऑब्जेक्ट या कॉलम नाम गुम या खाली है। विवरणों में चयन के लिए, प्रत्येक कॉलम का नाम सत्यापित करें। अन्य बयानों के लिए, खाली उपनाम नामों की तलाश करें। "" या [] के रूप में परिभाषित एलियंस की अनुमति नहीं है। उपनाम को वैध नाम में बदलें। लेबल 'सी' पहले ही घोषित कर दिया गया है। लेबल नाम एक क्वेरी बैच या संग्रहीत प्रक्रिया के भीतर अद्वितीय होना चाहिए .. अपवाद। अपवाद
परिभाषित करें "काम नहीं करता है"। परिणाम की अपेक्षा से आप कितने परिणाम प्राप्त करते हैं? –
क्या आप कुछ हार्ड कोड किए गए मान जोड़ सकते हैं। एक डेटा परीक्षण के रूप में "DATABASEFILENAME = MyFileName", "DATABASELOGNAME = 'sa'", "DBUSEROWNER = 'myUser'"? – granadaCoder
मैंने प्रश्न –