Potrzebuję wykonać skrypt powershella, który wykona skrypt SQL w celu utworzenia bazy danych. Na podstawie mojej wiedzy ja exec polecenia PowerShell w ten sposób:Invoke-Sqlcmd, InputFile i Variable
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"
}
skrypt 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
Zaktualizowałem zmienną $ sqlVariable zgodnie z sugestią @Chad Miller. Więc problem był. Teraz pojawia się ten błąd: Tworzenie błędu bazy danych: Błąd bazy danych: Brak nazwy obiektu lub kolumny lub jest ona pusta. W przypadku instrukcji SELECT INTO sprawdź, czy każda kolumna ma nazwę. W przypadku innych instrukcji szukaj pustych nazw aliasów. Aliasy zdefiniowane jako "" lub [] nie są dozwolone. Zmień alias na poprawną nazwę. Etykieta "C" została już zadeklarowana. Nazwy etykiet muszą być unikalne w obrębie partii zapytania lub procedury składowanej. Wyjątek. Wyjątek
Zdefiniuj "nie działa". Jak dokładnie wynik różni się od oczekiwanego rezultatu? –
Czy możesz dodać twarde zakodowane wartości. "DATABASEFILENAME = MyFileName", "DATABASELOGNAME =" sa "", "DBUSEROWNER =" myUser "" jako test tymczasowy? – granadaCoder
Zaktualizowałem pytanie: –