freshman2017
Goto Top

Sql Befehl als .Exe?

Guten Tag,

über nachfolgenden Code führe ich einen längeren SQL Befehl mit einer Batch aus:

sqlcmd -E -S SQLSVRBOSTON1\MyDB1 -i C:\Temp\ClearTables.sql

Ich möchte ungern dass User die .sql öffnen können. Gibt es eine Möglichkeit diese wie bspw. Batch to Exe o.ä.?

Content-Key: 521233

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

Ausgedruckt am: 29.03.2024 um 09:03 Uhr

Mitglied: emeriks
emeriks 02.12.2019 aktualisiert um 14:06:08 Uhr
Goto Top
Hi,
joa. Du könntest ein PowerShell-Script erstellen und in dieses die SQL-Datei als Here-String einfügen. Dann mit den .Net-Befehlen mit diesem SQL-Server verbinden und diese Kommandos ausführen lassen. Wenn das funktioniert, dann kann man dieses PS-Script auch als EXE verpacken lassen.

E.
Mitglied: freshman2017
freshman2017 02.12.2019 um 14:23:57 Uhr
Goto Top
Zitat von @emeriks:

Hi,
joa. Du könntest ein PowerShell-Script erstellen und in dieses die SQL-Datei als Here-String einfügen. Dann mit den .Net-Befehlen mit diesem SQL-Server verbinden und diese Kommandos ausführen lassen. Wenn das funktioniert, dann kann man dieses PS-Script auch als EXE verpacken lassen.

E.

Vielen Dank für den Hinweis, an ein PowerShell-Script hatte ich auch schon gedacht - hast Du sowas bereits mal erstellt?
Mitglied: freshman2017
freshman2017 02.12.2019 um 14:33:56 Uhr
Goto Top

Wie könnte ich denn nachfolgenden SQL Befehl in eine PS Skript bekommen? face-smile

IF NOT EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME='User')  
CREATE TABLE USER

	(
	FirstName VARCHAR(40),
	ByName VARCHAR(40),
	LastName VARCHAR(40)
	)

GO

BULK INSERT User
FROM 'C:\ProgramData\MSSQL\test.txt' WITH  
	(
	FIELDTERMINATOR = ';',  
	ROWTERMINATOR = '\n'  
	)

GO
Mitglied: emeriks
Lösung emeriks 02.12.2019 um 14:35:42 Uhr
Goto Top
Das habe ich schon beschrieben.

$query = @"  
blablabla
"@  
 
Invoke-Sqlcmd -Query $query -ServerInstance "MyComputer\MainInstance"  
Mitglied: ukulele-7
Lösung ukulele-7 03.12.2019 um 09:42:18 Uhr
Goto Top
Alternativ könntest du den Inhalt der .sql in eine gespeicherte Prozedur packen und nur die aufrufen. Dann sieht der User auch nix vom eigentlichen SQL-Code.