SQL Server 2012 - 使用openquery插入到链接的服务器表中

Kir*_*ran 5 sql-server openquery

我有一个链接服务器,Remoteserver其中包含一个表,用于保存dir中的文件和文件夹名称

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

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

    INSERT [Remoteserver].[dbo].[files] (subdirectory,depth,isfile)
       EXEC master.sys.xp_dirtree '\\Fileserver\DBBackup',1,1;
    
    Run Code Online (Sandbox Code Playgroud)
  3. 选择"子目录"列

我尝试了一些使用openquery的东西,我可以选择现有的记录,但无法进行插入.

任何帮助表示赞赏.

And*_*zov 5

试试这个

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

要么

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');
Run Code Online (Sandbox Code Playgroud)

但在一般情况你并不需要在所有如果使用OPENQUERY FileserverRemoteserver从本地机器进行访问.

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