SQL Server 2012 - 使用 openquery 插入链接服务器 table

SQL Server 2012 - Insert into linked server table using openquery

我有一个链接服务器 Remoteserver,其中包含一个 table,它保存来自目录

的文件和文件夹名称

当我在远程服务器上时,我可以运行内置程序 (xp_dirtree) 并填充 'files' table 但我需要做的是运行查询来自执行此操作的本地 SQL 服务器:

  1. 删除 Remoteserver
  2. [Files] table 的所有记录
  3. 插入来自存储过程的数据:

    INSERT [Remoteserver].[dbo].[files] (subdirectory,depth,isfile)
       EXEC master.sys.xp_dirtree '\Fileserver\DBBackup',1,1;
    
  4. 选择 'subdirectory' 列

我尝试了一些使用 openquery 的操作,我能够 select 现有记录但无法插入。

感谢任何帮助。

试试这个

INSERT INTO OPENQUERY([Remoteserver]
    ,'SELECT subdirectory, depth, [file] FROM [RemoteDB].[dbo].[files]')
EXEC master.sys.xp_dirtree '\fileserver\DBBackup', 1, 1;

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');

但一般来说,如果 FileserverRemoteserver 可从本地计算机访问,则根本不需要使用 OPENQUERY。

INSERT INTO [Remoteserver].[RemoteDB].[dbo].[files] (subdirectory, depth, isfile)
   EXEC master.sys.xp_dirtree '\Fileserver\DBBackup',1,1;