fred666
Goto Top

SQL 2005 Datenbank mittels Batch erstellen?!

Entwicklungsumgebung bildet ein WinXP Rechner und ein SQL Server 2005.

Hallo,

wie der Thread schon andeutet, würde ich gerne eine SQL Datenbank mithilfe einer Batchdatei erstellen. Ich habe alle Skripte dieser DB (DATABASE, TABLE, VIEWS, CONTRAINTS etc.) schon als SQL-Skripte auf D:\SQL_DB abgelgt.

Kann mir jemand helfen und sagen wie ich nun eine Batchdatei schreibe die mir eine DB erstellt mit genau den *.sql dateien??


Danke und Grüße
Fred

Content-ID: 168451

Url: https://administrator.de/contentid/168451

Ausgedruckt am: 26.11.2024 um 10:11 Uhr

BadFsaadKl
BadFsaadKl 22.06.2011 um 10:36:17 Uhr
Goto Top
Moin,

schau mal ob dir folgendes weiterhilft.

http://msdn.microsoft.com/de-de/library/ms162773.aspx

MfG
Fred666
Fred666 22.06.2011 um 11:58:43 Uhr
Goto Top
Hi,

ich muss hinzugügen, dass ich mit Batch-Programmierung bisher nichts zu tun hatte.
Ich habe mir folgendes mal "zusammengekratzt":

@echo off & setlocal
set SqlInstance=WINDOWS/INSTANCE1
set logfile=Log_Datei.txt
set databasename=DB_Test
set maindir=%cd%

echo %databasename%

if errorlevel 1 goto finally
echo %date% >> %logfile%
echo %time% >> %logfile%
echo build database >> %logfile%
echo build database

REM Hier sollen in einer For-Schleife alle Ordner durchgegangen werden und die darin enthaltenen .sql Dateien ausgeführt werden.
REM Der Ordner zum erstellen der Database heisst also '1 Database' der mit den Tabellen '2 Tabellen'etc.
for /D %%d in (01* 02* 03* 04* 05* 06* 07* 08* 09* ) do *hier steht der Befehl
:finally
endlocal

Ich hoff es ist verständlicher ... ich kann mir aus dem obigen Link halt nichts zusammenschreiben face-sad

Bitte helft mir!! :'( ... Danke

Fred face-smile
Logan000
Logan000 22.06.2011 um 12:16:05 Uhr
Goto Top
Moin Moin

Ich hoff es ist verständlicher ... ich kann mir aus dem obigen Link halt nichts zusammenschreiben face-sad
Wieso nicht? für dein
*hier steht der Befehl
ersetzt du durch
sqlcmd -u [SQLuser] -p [Passwort] -i [PfadVomSQLSkript]
und dann sollte es das eigentlich sein.

Gruß L.
Fred666
Fred666 22.06.2011 um 13:18:58 Uhr
Goto Top
Hi...

also ich seh halt Probleme darin, da ich nicht weiss wie mein User heisst, ich kein Passwort kenne, mit welchem ich ich als einloggen muss und ich ja will, dass die For-Schleife mir alle *.sql Datein aufruft, die in einem Ordner stehen!!!
Also beispielsweise für den Ordner '01 Database' wird beim ersten durchlauf nur eine SQL-Datei ausgeführt, nämlich die zum erstellen der SQL-DB. Im Ordner '02 Tables' sind 15 SQL-Dateien enthalten! Ich möchte ja nicht jeden einzelnen aufruf machen sondern eben mitHilfe der FOR-Schleife beim 2ten Durchlauf alle diese 15 Dateien aufrufen.

Dafür muss ich doch aber -i [PfadVomSQLSkript] variabel halten oder nicht?!

Edit: Muss ich auch nicht noch erst die Instanz mit angeben wo es eingefügt werden soll??

Gruß Fred!
BadFsaadKl
BadFsaadKl 22.06.2011 um 13:35:50 Uhr
Goto Top
Moin,

den User und das Passwort, vergibst du bei der Installation.
Insovfern du nicht seperate User angelegt hast.

"Standarduser" bei der installation ist "sa".
Passwort, welches halt vergeben ist.

Solange du das nicht weist, brauchst du dir über den Rest keine Gedanken machen.
Weil irgendwie musst du dich ja, selbst via Script, am SQL-Server anmelden.

Zumindest ist mir nix anderweitiges bekannt, wie man Scripte ohne Anmeldung ausführen kann,

MfG
Logan000
Logan000 22.06.2011 um 13:35:50 Uhr
Goto Top
Moin
Zitat von @Fred666:
Dafür muss ich doch aber -i [PfadVomSQLSkript] variabel halten oder nicht?!
Genau. Den Pfad Frickels du dir, natürlich in abhängigkeit deiner Schleife, zusammen.
Frag mich aber nicht wie. Ich bin miserabel in Batch und habe dies % Geschleuder nie verstanden.

also ich seh halt Probleme darin, da ich nicht weiss wie mein User heisst, ich kein Passwort kenne, mit welchem ich ich als einloggen muss
Darin sehe ich allerdings auch ein Problem. Du meldest dich immer mit einem Benutzer auf dem SQL Server an.
Welchen nimmst du denn wenn du das Management Studio startest?
Dabei kennt der SQL Server 2 Autentifizierungs Methoden:
1. SQL Server Authentifizierung.
Du richtest auf den SQL Server selbst die Benutzer ein und gewährst ihnen Zugriff auf z.B. einzelne Datenbanken.
Hier gibts einen Admin der heißt: sa.
2. Windows-Autentifizierung
Hier werden nur Windows Benutzer durchgereicht. Administratoren sind Vordefiniert enthalten.

Hoffe das hilft weiter.

Gruß L.
Fred666
Fred666 22.06.2011 um 14:11:49 Uhr
Goto Top
Also das ganze geht über SQL Server und Windows-Authentifizierungs Modus. Ich öffne das Management Studios und muss mich nur Connecten (also die voreingestellte Verbindung aufbauen. Danach kann ich eig alles machen mit der DB was ich mag! :P

Mein WinAccount an dem ich arbeite nennt sich 'Host'.

Ich hab jetzt mal mittels 'select current_user as aktUser in einer Querry Ermittelt wie mein User heißt: dbo

So ... danach will ich einfach mal nur eine sql Datei aufrufen mit:

@echo off
set srv=WINXPSP2\XXXX
set sqlusr=dbo
rem set sqlpwd= xxx???

sqlcmd -U %sqlusr%-S %srv% -i Create_DATABASE_ALOAH.sql

echo bla
pause

Die Sache ist die, dass ich jetzt die Meldung bekomme ich müsste Passwort eingeben!! face-sad

Also 'Password:' im cmd
Fred666
Fred666 22.06.2011 um 14:32:49 Uhr
Goto Top
Also es hat geklappt indem ich -U und _P weggelassen habe und geschrieben habe:
@echo off
set srv=WINXPSP2\INSTANCE1
sqlcmd -S %srv% -i Create_DATABASE_ALOAH.sql 

Wäre supper wenn mir noch jemand helfen könnte dies nun wie oben beschrieben in einer For-Schleife zu packen!! face-smile

Grüße und Danke
Fred! face-smile
BadFsaadKl
BadFsaadKl 22.06.2011 um 14:33:26 Uhr
Goto Top
Würde dir vorschlagen, wenn du dich auf der Management Console anmeldest,
lege dir doch nen neuen User an.

von dem weist du ja dann Username/Password.

MfG
Fred666
Fred666 22.06.2011 um 16:11:15 Uhr
Goto Top
Soo... also ich hab mal was zusammengeschrieben aber ich komm nicht mehr weiter:


set srv=WINXPSP2\Instanz1
set maindir=%cd%
for /D %%d in (01* 02* 03* 04* 05* 06* 07* 08* 09* ) do echo building 01* ... & cd 01* & call ..\..\ExecuteSqlBatches %srv% master & cd %maindir
<code/>

aber da ist noch ein bug!!! face-sad

HILFEEEE :'(
Fred666
Fred666 27.06.2011 um 11:15:48 Uhr
Goto Top
Hallo zusammen...

nachdem ich nun das Wochenende "gebüffelt" habe habe ich eine Lösung gefunden die allerdings noch nicht 100%ig geht!!

@echo off & setlocal
set srv=SERVER\INSTANZ1
set maindir=%cd%\

FOR /D %%d in (01* 02* 03* 04* 05* 06* 07* 08* 09* ) do (

	echo %maindir%%%d
	set stringneu=%maindir%%%d
                  FOR /R %stringneu% %%f in (*.sql) do SQLCMD -S %srv% -i %%f
)
PAUSE
endlocal

Die erste Forschleife schaut im Pfad in der die Batchdatei liegt nach Ordnern die mit der in der Klammer enthaltenen Zahlen beginnen.
Die zweite Forschleife führt alle in dem Ordner enthaltenen SQL-Dateien aus!!!
Beim Ausführen bekomme ich einen Fehler und zwar vermute ich, dass das bei der Zuweisung " set stringneu=%maindir%%%d" erfolgt!!!
Ich möchte da im Prinzip den festen Pfad mit einer Laufvariable verknüpfen!!

Beide Schleifen funktionieren für sich schon nur beim zusammenfügen klappts nicht ganz!! face-sad

Kann mir da jemand helfen und sagen wie ich die Variable %stringNeu% so gestalte, dass es den festen Pfad %cd% endhält und eben die von der ForSchleife erstellten Variable???

Grüße Fred

[Edit Biber] Codetags korrigiert. [/Edit]