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

时间:2015-01-09 05:28:46

标签: sql-server openquery

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

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

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

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

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

    感谢任何帮助。

1 个答案:

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

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

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