Hallo Microsoft SQL Server Masters,Eine einzeilige Alternative für xp_cmdshell? Ich habe versucht, einige Dinge
Nun, ich habe einen Microsoft SQL Server 2000, wie unten beschrieben:
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86)
May 3 2005 23:18:38
Copyright (c) 1988-2003 Microsoft Corporation
Desktop Engine on Windows NT 5.2 (Build 3790: Service Pack 2)
Ich brauche einen Betriebssystembefehl von dem Microsoft SQL Server auszuführen, Ich habe überprüft, dass ich Sysadmin-Berechtigungen mit der Abfrage unten habe und es gab "1" zurück, was meine Berechtigung bestätigt.
SELECT IS_SRVROLEMEMBER('sysadmin', 'sa');
habe ich versucht, die traditionelle xp_cmdshell und es ist nichts passiert, nur um sicher zu machen, arbeitet ich die berühmten versucht:
EXEC xp_cmdshell 'dir c:\'; EXEC master.dbo.xp_cmdshell 'dir c:\';
EXEC master..xp_cmdshell "dir c:\";
Und alle zurück nichts, was ich, dass xp_cmdshell nicht verfügbar glauben machen ist. Ich weiß, dass xp_cmdshell in Microsoft SQL Server 2005 standardmäßig deaktiviert ist, aber nicht in 2000, trotzdem habe ich versucht, es auf die gleiche Weise wieder zu aktivieren, aber es ist fehlgeschlagen.
ich auf Internet sah, und ich fand diese Art und Weise xp_cmdshell für Microsoft SQL Server 2000 zu reaktivieren:
exec sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'
exec sp_addextendedproc xp_cmdshell, 'C:\Program Files\Microsoft SQL Server\MSSQL\Binn\xplog70.dll'
Es ist jedoch immer noch nicht funktioniert. Ich fand einen anderen Artikel, der sagte, dass Admins diese Dateien manchmal löschen und ich denke, dass es mein Fall ist, der Artikel sagt, dass, wenn es gelöscht wurde, ich "xp_msver" ausführen kann und in meinem Fall auch nichts zurückgibt.
Referenz: http://support.microsoft.com/kb/891984
Ich habe auch versucht, diese Abfrage, die ich im Internet gefunden, um zu sehen, ob xp_cmdshell existiert und es gab nichts zurück (aber es kann eine Einschränkung meines seltsamen SQL-Client sein, siehe unten).
if exists (select * from dbo.sysobjects where id = object_id(N’[dbo].[ xp_cmdshell]‘) and OBJECTPROPERTY(id, N’IsExtendedProc’) = 1);
Also, ich bin wirklich in Schwierigkeiten, recherchieren ich bei Google und fand mögliche Lösungen wie Job-Agent, SSIS-Paket, CLR gespeicherte Prozedur, sp_OACreate (und Freunde) und SQLCMD aber nichts funktionierte. Vielleicht habe ich es falsch gemacht, aber eine weitere Einschränkung in meinem Fall ist, dass ich gerade Zugang zu diesem Microsoft SQL Server 2000 von einer Sprungbox (Linux) habe, die einen sehr seltsamen SQL-Server-Client hat, der keine Abfragen mit mehreren Zeilen akzeptiert, folglich kann ich nicht mit Erfolg versuchen die folgenden möglichen Lösungen:
1 # Job Agent
DECLARE @jobID uniqueidentifier, @cmd varchar(1000)
SET @cmd = 'netstat -na > c:\connections.txt'
EXEC msdb.dbo.sp_add_job @job_name = '_tmp_MakeDirectory', @enabled = 1, @start_step_id = 1, @owner_login_name='sa', @job_id = @jobID OUTPUT
EXEC msdb.dbo.sp_add_jobstep @job_id = @jobID, @step_name = 'Create Backup Folder', @step_id = 1, @subsystem = 'CMDEXEC', @command = @cmd
EXEC msdb.dbo.sp_add_jobserver @job_id = @jobID
EXEC msdb.dbo.sp_start_job @job_id = @jobID, @output_flag = 0
WAITFOR DELAY '000:00:05' -- Give the job a chance to complete
IF EXISTS (SELECT name FROM msdb.dbo.sysjobs WHERE name = '_tmp_MakeDirectory')
BEGIN
EXEC msdb.dbo.sp_delete_job @job_name = '_tmp_MakeDirectory'
END
2 # SQLCMD
CREATE PROCEDURE SQLCMD_TEST
AS
!!MKDIR "netstat -na > c:\connections.txt"
:OUT "C:\TEST\test.TXT"
SELECT @@VERSION AS 'SERVER VERSION'
!!DIR
GO
SELECT @@SERVERNAME AS 'SERVER NAME'
GO
EXEC SQLCMD_TEST
Leider habe ich keine andere Möglichkeit, dies zugreifen Microsoft SQL Server, ich weiß, es ist nicht der beste Weg, aber es ist, wie es ist und ich kann nichts tun. Also, ich brauche eine Lösung, um Betriebssystem-Befehle auf diesem Microsoft SQL Server 2000 mit all diesen Einschränkungen auszuführen. Kann jemand bitte eine der beiden obigen Methoden für eine einzelne Zeilenabfrage portieren?
Jeder andere Vorschlag mit Beispiel ist sehr willkommen.
Vielen Dank.
Grüße.
Was ist der Fehler, den Sie sehen, wenn Sie eine der letzten beiden Optionen ausführen? –
"... eine weitere Einschränkung in meinem Fall ist, dass ich gerade Zugang zu diesem Microsoft SQL Server 2000 von einer Sprungbox (Linux) habe, die einen sehr seltsamen SQL-Server-Client hat, der keine Anfragen mit mehreren Zeilen akzeptiert, .. . "Das klingt beunruhigend wie Injection-Hacking. – RBarryYoung
Hallo Vince. Ich sehe keine Antwort, es kehrt nur zur Eingabeaufforderung zurück. Irgendeine Idee? – user1319402