Benutzer mit den meisten Antworten
Abfragen in DB speichern und nicht Als .sql Textdatei

Frage
-
Soll ich mich gleich im vorfeld entschuldigen :) - ich finde es leider nicht
ich habe immer für mich ein paar Abfragen die ich gerne zu der Datenbank speichern möchte aber ich weiss nicht wo
zb.
wer ist angemeldet
Indexe neu setzen
oder einach ein backup der DB erstellen
zzt. Speichere ich mir diese in eine textdatei
sprich zB
BackupMasterErstellen.sql
inhalt BACKUP DATABASE CSRdat_Master TO DISK = 'C:\CSR\CSRdat_Master.bak' WITH INIT
kann ich dieses nicht in der Datenbank hinterlegen - würde das handling für mich einfacher machen
Danke
Antworten
-
Hallo Michaek,
Stored Procedures sind schon das geeignete Mittel, ebenso Views für häufige Abfragen.
Eins SP kann so aussehen:
-- SP anlegen CREATE PROCEDURE dbo.pBackup_CSRdat_Master AS BEGIN BACKUP DATABASE CSRdat_Master TO DISK = 'C:\CSR\CSRdat_Master.bak' WITH INIT; END; GO -- Ausführen EXEC dbo.pBackup_CSRdat_Master; GO
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort markiert MCDPone Freitag, 14. Februar 2020 10:37
Alle Antworten
-
Hi,
Du willst die SQL Statements in einer Datenbank bzw. einer Tabelle darin speichern?
Falls ja, wo liegt dabei das Problem?
Erstell dir eine Tabelle:
CREATE TABLE [dbo].[SqlStatements] ( [ID] [int] IDENTITY(1,1) NOT NULL, [Key] [nvarchar](255) COLLATE Latin1_General_CI_AS NOT NULL, [Value] [nvarchar](max) COLLATE Latin1_General_CI_AS NULL, CONSTRAINT [PK_SqlStatements] PRIMARY KEY CLUSTERED ( [ID] ASC ) )
Und leg die Werte dort in der Value Spalte ab. Wichtig für dich ist dabei, dass Du vor dem Speichern die Strings so anpasst, dass Du die auch speichern kannst. ' musst Du durch '' ersetzen, den String an sich natürlich auch nochmal in '...' einfassen, ...
INSERT INTO SqlStatements ( [Key], Value ) VALUES ( 'DeinSchlüssel', 'BACKUP DATABASE CSRdat_Master TO DISK = ''C:\CSR\CSRdat_Master.bak'' WITH INIT' )
Auslesen ganz normal (ohne Konvertierung) dann mit:
SELECT * FROM SqlStatements WHERE [Key] = 'DeinSchlüssel'
HTH
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Bearbeitet Stefan FalzModerator Freitag, 14. Februar 2020 10:10
-
Die Problematik dabei ist lediglich:
Enthält der SQL Hochkommas, so sind diese korrekt zu verdoppeln.
Sonst scheitert der Insert dauernd mit Syntaxfehler.Einfacher ist es, wenn du Access hast.
Dann kannst du für obige Tabelle ein einfaches Formular (Schlüssel- und Memofeld) bauen und deine SQL's dort per Copy/Paste einfach eintragen und wieder abrufen. -
Hallo Stefan
an eine Tabelle hatte ich auch schon gedacht
aber ich dachte eher in einem anderen bereich wo ich diese einfach aufrufen könnte und direkt ausführen kann
im Bereich Funktionen oder Proceduren
weiss aber ehrlich gesagt nicht wie ich soetwas dort speichern kann und ob die da überhaupt richtig aufgehoben sind
LDN
Michael
- Bearbeitet MCDPone Freitag, 14. Februar 2020 10:20
-
Das geht dann per "Create Procedure":
https://docs.microsoft.com/de-de/sql/t-sql/statements/create-procedure-transact-sql?view=sql-server-ver15
was allerdings komplexer ist.
Per "Execute MeineProzedur" kannst du diese dann ausführen:
https://docs.microsoft.com/de-de/sql/t-sql/language-elements/execute-transact-sql?view=sql-server-ver15 -
Hallo Michaek,
Stored Procedures sind schon das geeignete Mittel, ebenso Views für häufige Abfragen.
Eins SP kann so aussehen:
-- SP anlegen CREATE PROCEDURE dbo.pBackup_CSRdat_Master AS BEGIN BACKUP DATABASE CSRdat_Master TO DISK = 'C:\CSR\CSRdat_Master.bak' WITH INIT; END; GO -- Ausführen EXEC dbo.pBackup_CSRdat_Master; GO
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort markiert MCDPone Freitag, 14. Februar 2020 10:37