auf zu erweitern, was zum automatischen Export von Daten als CSV zu einer Netzwerkfreigabe über SQL Server-Agenten zur Verfügung gestellt worden.
(1) Aktivieren Sie die xp_cmdshell Prozedur:
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
-- Enable the xp_cmdshell procedure
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE
GO
(2) Erstellen Sie einen Login-Namen 'Domain \ Testuser' (Windows-Benutzer) für die nicht-Sysadmin Benutzer, der Öffentlichkeit Zugang zu den Master-Datenbank hat. Fertig durch Benutzerzuordnung
(3) Melden Sie sich als Stapeljob an: Navigieren Sie zu Lokale Sicherheitsrichtlinie -> Lokale Richtlinien -> Zuweisen von Benutzerrechten.Fügen Sie Benutzer auf "Anmelden als Batch-Job"
(4) Geben Sie Lese-/Schreibberechtigungen Ordner für Domäne \ Benutzer zu vernetzen
(5) Grant-EXEC-Berechtigung für die Xp_cmdshell gespeicherte Prozedur:
GRANT EXECUTE ON xp_cmdshell TO [Domain\TestUser]
(6) erstellen Sie ein Proxy-Konto, das
unter Verwendung sp_xp_cmdshell_proxy_account wird laufen xp_cmdshell
EXEC sp_xp_cmdshell_proxy_account 'Domain\TestUser', 'password_for_domain_user'
(7) Wenn der sp_xp_cmdshell_proxy_account Befehl nicht funktioniert, m erstellen Sie es von Jahr zu Jahr
create credential ##xp_cmdshell_proxy_account## with identity = 'Domain\DomainUser', secret = 'password'
(8) Aktivieren Sie SQL Server Agent. Öffnen Sie den SQL Server-Konfigurations-Manager, navigieren Sie zu SQL Server-Dienste, aktivieren Sie den SQL Server-Agenten.
(9) Erstellen Sie einen automatisierten Job. Öffnen Sie SSMS, wählen Sie SQL Server Agent, klicken Sie dann mit der rechten Maustaste auf Jobs und klicken Sie auf "Neuer Job".
(10) Wählen Sie "Besitzer" als Ihren erstellten Benutzer. Wählen Sie "Steps", machen Sie "type" = T-SQL. Füllen Sie das Befehlsfeld ähnlich wie unten aus. Trennzeichen als ',' setzen
EXEC master..xp_cmdshell 'SQLCMD -q "select * from master" -o file.csv -s ","
(11) Füllen Sie die Zeitpläne entsprechend aus.
Warum verwenden Sie die gefährlichste gespeicherte Prozedur, die je gebaut wurde? ('xp_cmdshell') – SLaks
Es ist älterer Code und keine Zeit, um neu zu schreiben. Wir verwenden es, um BCP aufzurufen, um eine Datei zur Verarbeitung in eine temporäre Tabelle zu importieren. Die temporäre Tabelle ist dynamisch sql und wir generieren die .fmt-Datei basierend auf der gleichen Logik, die die dynamische SQL verwendet. Es wäre mehr als ein Tag, um dies umzusetzen. –
Können Sie die genaue SQL Server-Versionsnummer, einschließlich Build-Nummer? –