RECONFIGURE
EXEC sp_configure 'xp_cmdshell',1
declare @cmdstring varchar(1000)
set @cmdstring = 'copy D:\\Mine\\Mine\\Icons\\1355312509_gadu.ico D:\\Mine\\Mine\\1355312509_gadu.ico'
exec master..xp_cmdshell @cmdstring
RECONFIGURE
EXEC sp_configure 'xp_cmdshell',0
I am trying to execute this on remote server, I am logged in as sysadmin though I am not able to execute, this is the error I get, I have been through earlier post but couldn't find the proper solution
我试图在远程服务器上执行此操作,我以sysadmin身份登录,虽然我无法执行,这是我得到的错误,我已经通过较早的帖子但是找不到合适的解决方案
output
The device is not ready.
NULL
Any help would be apreciated
任何帮助都会被贬低
Won't this code
不会这个代码
RECONFIGURE
EXEC sp_configure 'xp_cmdshell',0
at the end of code eliminate those security threats??
在代码结束时消除那些安全威胁?
This is what I have done and its okay
这就是我所做的,没关系
CREATE TABLE #temp
(
id INT IDENTITY(1, 1),
name_file VARCHAR(500),
depth_tree VARCHAR(10),
is_folder_files VARCHAR(10)
)
/* xp_dirtree selects file from specific location
* depth_tree : depth of the search i.e. subfolders
* is_folder_files : selects folders only or files too
*/
INSERT INTO #temp(name_file, depth_tree, is_folder_files) EXEC xp_dirtree @source_path, 0, 1
-- Must concatenate to have permission for xp_cmdshell
SET @concatenate_string = 'RECONFIGURE EXEC sp_configure ''xp_cmdshell'',1 EXEC MASTER..xp_cmdshell '
-- Generating copy string in bulk
SELECT @cmd_string =
ISNULL(@cmd_string, '') +
CASE WHEN (LEN(REPLACE(t.name_file, @seperate_value, 1)) <> LEN(t.name_file)) -- if @seperate_value is not in image
THEN
(
SELECT CASE
WHEN REPLACE(t.name_file, 'Approach', 1) <> t.name_file OR REPLACE(t.name_file, 'CloseUp', 1) <> t.name_file -- if word Approach or CloseUp is not there in image
THEN
(
SELECT CASE
WHEN ((SELECT f.FaceID FROM Face f WHERE CAST(f.Notes AS VARCHAR) = SUBSTRING(t.name_file, 0, CHARINDEX(@seperate_value, t.name_file)-1)) IS NOT NULL) -- when extracted ID from image <> NotesID
THEN
(
@concatenate_string + '''copy ' + @source_path + t.name_file + ' '
+ @destination_path
+ (SELECT f.FaceID FROM Face f WHERE CAST(f.Notes AS VARCHAR) = SUBSTRING(t.name_file, 0, CHARINDEX(@seperate_value, t.name_file)-1)) -- Compares and gives the faceID
+ (SELECT CASE
WHEN REPLACE(t.name_file, 'Approach', 1) <> t.name_file THEN '-AS.jpg'' '
WHEN REPLACE(t.name_file, 'CloseUp', 1) <> t.name_file THEN '-BS.jpg'' '
ELSE
'Undefined'
END
)
)
ELSE
' '
END
)
ELSE
' '
END
)
ELSE
' '
END
FROM #temp t
SELECT @cmd_string + 'RECONFIGURE EXEC sp_configure ''xp_cmdshell'',0'
EXEC (@cmd_string)
2 个解决方案
#1
2
I have had this one some time too. I ran the script from server a, where things were on server b. I checked and the only thing (besides credentials, which looks it isn't an issue) was that the filestructure didn't exists on the remote server..
我也有一段时间了。我从服务器a运行脚本,其中的东西在服务器b上。我检查过,唯一的事情(除了凭证,看起来不是问题)是文件结构在远程服务器上不存在。
#2
1
It's most likely an issue with the credentials the SQL Server Service is running under. The account might not have sufficient access to the folders you are trying to copy from or to.
这很可能是运行SQL Server服务的凭据的问题。该帐户可能无法充分访问您尝试从中复制的文件夹。
One solution could be attempting to run the task from SQL Server Agent, see also this discussion on the MSDN forums.
一种解决方案可能是尝试从SQL Server代理运行任务,另请参阅MSDN论坛上的此讨论。
#1
2
I have had this one some time too. I ran the script from server a, where things were on server b. I checked and the only thing (besides credentials, which looks it isn't an issue) was that the filestructure didn't exists on the remote server..
我也有一段时间了。我从服务器a运行脚本,其中的东西在服务器b上。我检查过,唯一的事情(除了凭证,看起来不是问题)是文件结构在远程服务器上不存在。
#2
1
It's most likely an issue with the credentials the SQL Server Service is running under. The account might not have sufficient access to the folders you are trying to copy from or to.
这很可能是运行SQL Server服务的凭据的问题。该帐户可能无法充分访问您尝试从中复制的文件夹。
One solution could be attempting to run the task from SQL Server Agent, see also this discussion on the MSDN forums.
一种解决方案可能是尝试从SQL Server代理运行任务,另请参阅MSDN论坛上的此讨论。