Discussion:
Parameter einem Script übergeben
(zu alt für eine Antwort)
andi rickenbach
2007-05-08 10:56:25 UTC
Permalink
Hallo

Ich möchte von einem batch-File aus zwei Parameter einem SQL-Script
übergeben. Wie mache ich das?

Möchte folgendes:
CreateDB.bat hat folgenden Inhalt:
sqlcmd -Usa -Ppwd -i C:\Temp\CreateDB.sql

Das CrateDB.sql hat folgenden Inhalt:
USE [master]
GO
IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = N'Test')
BEGIN
CREATE DATABASE [Test] ON PRIMARY
( NAME = N'Test', FILENAME = N'C:\Program Files\Microsoft SQL
Server\MSSQL.1\MSSQL\DATA\Test.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED,
FILEGROWTH = 1024KB )
LOG ON
( NAME = N'Test_log', FILENAME = N'C:\Program Files\Microsoft SQL
Server\MSSQL.1\MSSQL\DATA\Test_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB ,
FILEGROWTH = 10%)
END


Ich möchte nun der Pfad der DB mit einem Parameter übergeben. Habe das so
versucht, geht aber nicht:

Im Batchfile:
sqlcmd -Usa -Ppwd -i C:\Temp\CreateDB.sql C:\Program Files\Microsoft SQL
Server\MSSQL.1\MSSQL\DATA\Test.mdf

Im SQL Script versucht mit %1:
.....
CREATE DATABASE [Test] ON PRIMARY
( NAME = N'Test', FILENAME = N'%1' , SIZE = 3072KB , MAXSIZE = ......

Wie könnte ich das machen? Möchte dieser Pfad mit einem Parameter vom
Batchfile aus dem Script übergeben.

Vielen Dank.
Antje Kaiser
2007-05-08 11:35:33 UTC
Permalink
Hallo Andi,
ich hätte da folgende Idee:
Schreib eine Batchdatei, die das was in Deiner eigentlichen Batchdatei
stehen soll per Echo in eine Datei namens .bat schreibt. Dieser
"vorgeschalteten" Batchdatei kannst Du dann einen Parameter übergeben und im
Batch mit %1 an die richtige Stelle im danach folgenden Batch schreiben.
Klingt verwirrend, müßte aber eigentlich gehen.
--
Gruß
Antje
Post by andi rickenbach
Hallo
Ich möchte von einem batch-File aus zwei Parameter einem SQL-Script
übergeben. Wie mache ich das?
sqlcmd -Usa -Ppwd -i C:\Temp\CreateDB.sql
USE [master]
GO
IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = N'Test')
BEGIN
CREATE DATABASE [Test] ON PRIMARY
( NAME = N'Test', FILENAME = N'C:\Program Files\Microsoft SQL
Server\MSSQL.1\MSSQL\DATA\Test.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED,
FILEGROWTH = 1024KB )
LOG ON
( NAME = N'Test_log', FILENAME = N'C:\Program Files\Microsoft SQL
Server\MSSQL.1\MSSQL\DATA\Test_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB ,
FILEGROWTH = 10%)
END
Ich möchte nun der Pfad der DB mit einem Parameter übergeben. Habe das so
sqlcmd -Usa -Ppwd -i C:\Temp\CreateDB.sql C:\Program Files\Microsoft SQL
Server\MSSQL.1\MSSQL\DATA\Test.mdf
.....
CREATE DATABASE [Test] ON PRIMARY
( NAME = N'Test', FILENAME = N'%1' , SIZE = 3072KB , MAXSIZE = ......
Wie könnte ich das machen? Möchte dieser Pfad mit einem Parameter vom
Batchfile aus dem Script übergeben.
Vielen Dank.
Olaf Pietsch
2007-05-08 15:31:01 UTC
Permalink
Hallo Andi,
Post by andi rickenbach
Ich möchte von einem batch-File aus zwei Parameter einem SQL-Script
übergeben. Wie mache ich das?
sqlcmd -Usa -Ppwd -i C:\Temp\CreateDB.sql
bei sqlcmd können paramter übergeben werden mit:

-v var=value[ var=value...] ,

Erstellt eine sqlcmd-Skriptvariable, die in einem sqlcmd-Skript verwendet
werden kann. Setzen Sie den Wert in Anführungszeichen, falls er Leerzeichen
enthält. Sie können mehrere Werte mit var="values" angeben. Wenn einer der
angegebenen Werte fehlerhaft ist, generiert sqlcmd eine Fehlermeldung und
wird beendet.

sqlcmd -v MyVar1=something MyVar2="some thing"

sqlcmd -v MyVar1=something -v MyVar2="some thing"

siehe: http://msdn2.microsoft.com/de-de/library/ms162773.aspx

Beispeil:

D. Verwenden von sqlcmd für die Datenbankwartung
Im folgenden Beispiel wird veranschaulicht, wie mithilfe von sqlcmd
Datenbankwartungstasks ausgeführt werden können. Erstellen Sie
C:\BackupTemplate.sql mit dem folgenden Code.

USE master;

BACKUP DATABASE [$(db)] TO DISK='$(bakfile)';

...

siehe: http://msdn2.microsoft.com/de-de/library/ms180944.aspx

...
--
Gruß Olaf
Ich unterstütze PASS Deutschland e.V. (http://www.sqlpass.de)
Lesen Sie weiter auf narkive:
Loading...