将表从一个导出到另一个SQL Server自动批处理作业

时间:2018-02-12 08:26:18

标签: sql-server

我有一个本地sql server,免费版本,用于测试目的,并希望从生产服务器自动导入数据。 我是从SSMS手动完成的 - 右键单击​​数据库 - 任务 - 导出数据... ,我只选择特定的表,但每天做几次是不行的。

由于生产数据库大于免费版本允许,我不能简单地备份整个数据库并加载。 我也不能让我的本地服务器成为一个"链接"随着制作,所以简单

insert [server].[db].[schema].[table]
from [server].[db].[schema].[table]

也不会工作。

我无法在某些表(bcp)上执行Error = [Microsoft][SQL Server Native Client 11.0]Invalid character value for cast specification命令而没有错误:

bcp "select * from MyDB.dbo.Table where ID = 12345" QUERYOUT export.csv -w -t ; -k -T -S PRODSRV    
bcp MyDB.dbo.Table format nul -T -E -w -t ; -f format.fmt  -S PRODSRV
bcp MyLocalDB.dbo.Table IN export.csv  -k -T -S (localdb)\MSSQLLocalDB -f format.fmt

谢谢

1 个答案:

答案 0 :(得分:0)

@Myro,您可以使用SQL OpenRowSet命令连接到高效实例,并使用SELECT和INSERT命令从生产数据库表导入数据,如下所示

create table MyDBList ( dbname sysname)
GO

Insert into MyDBList (dbname)
SELECT rdb.name
FROM OPENROWSET('SQLNCLI', 'Server=kodyaz\sql2017;Trusted_Connection=yes;',
  'SELECT name FROM sys.databases') AS rdb
GO

这非常类似于使用链接服务器,但在这种情况下您不需要创建数据库对象。

如果您的SQL Server配置不是allow Ad Hoc Distributed Queries,请尝试通过执行以下sp_configure命令来设置所需的配置

sp_configure 'show advanced options', 1
reconfigure 

sp_configure 'Ad Hoc Distributed Queries', 1 
reconfigure 

sp_configure 'show advanced options', 0
reconfigure