我有一个链接服务器Remoteserver
,其中包含一个保存目录中文件和文件夹名称的表
当我在远程服务器上时,我可以运行内置过程(xp_dirtree
)并填充“文件”表,但我需要做的是从执行此操作的本地SQL服务器运行查询:
[Files]
Remoteserver
表格中的所有记录
插入来自存储过程的数据:
INSERT [Remoteserver].[dbo].[files] (subdirectory,depth,isfile)
EXEC master.sys.xp_dirtree '\\Fileserver\DBBackup',1,1;
选择“子目录”列
我尝试了一些使用openquery的东西,我可以选择现有的记录,但无法进行插入。
感谢任何帮助。
答案 0 :(得分:5)
试试这个
INSERT INTO OPENQUERY([Remoteserver]
,'SELECT subdirectory, depth, [file] FROM [RemoteDB].[dbo].[files]')
EXEC master.sys.xp_dirtree '\\fileserver\DBBackup', 1, 1;
OR
INSERT INTO OPENQUERY([Remoteserver]
,'SELECT subdirectory,depth, [file] FROM [RemoteDB].[dbo].[files]')
select * from OPENQUERY([another_server_name], 'master.sys.xp_dirtree ''\\fileserver\DBBackup\temp'', 1, 1');
但一般情况下,如果可以从本地计算机访问Fileserver
和Remoteserver
,则根本不需要使用OPENQUERY。
INSERT INTO [Remoteserver].[RemoteDB].[dbo].[files] (subdirectory, depth, isfile)
EXEC master.sys.xp_dirtree '\\Fileserver\DBBackup',1,1;