【问题标题】:Column data transfer from server to server从服务器到服务器的列数据传输
【发布时间】:2023-04-05 10:50:02
【问题描述】:

我需要从表中的特定列复制数据并传输到另一个表,但是,这涉及从一个 SQL Server 实例移动到另一个实例。

有没有人有任何实现这一点的提示?

【问题讨论】:

  • 您可以使用 SSMS 中的导出和导入功能。
  • 您可以通过在导出向导中编写自定义查询来仅选择一列。

标签: sql sql-server sql-server-2008 data-transfer server-to-server


【解决方案1】:

要将数据从一个实例传输到另一个实例,您有 3 个选择:

  1. Using Linked Servers
  2. 使用 SQL Server 集成服务
  3. Using SQL Import and Export Wizards

【讨论】:

    【解决方案2】:

    您可以链接 2 个服务器并使用查询插入数据。

    要链接服务器,您可以使用 MSSQL 过程,如下所示:

    EXEC sp_addlinkedserver @server='ServerName1', @srvproduct='', @provider='SQLNCLI', @datasrc='10.10.10.10'
    EXEC sp_addlinkedsrvlogin 'ServerName1', 'false', NULL, 'username', 'password'
     
    

    其中 ServerName1 是远程 SQL 服务器的名称,@datasrc 是 IP 地址/dns 名称

    要复制数据,您可以使用如下简单查询:

    insert into [ServerName1].DatabaseName.dbo.TableName(column1,column2)
    select Column1, null from LocalTableName
    

    这当然是一个例子,因为您没有发布表格设置。您可能需要对其进行调整以满足您的需要。

    【讨论】:

    • 我已经像上面那样链接了服务器,我正在复制数据,并将以下代码插入 [ucmwebservices\SQLEXPRESS].CPM.dbo.fct_Project([CreateDate2]) select [CreateDate2] FROM fct_项目;但是我收到错误消息:该语句已终止。消息 515,级别 16,状态 2,第 1 行无法将值 NULL 插入列“Proj_No”,表“CPM.dbo.fct_Project”;列不允许空值。插入失败。
    • 这是因为本地服务器上的列是可以为空的,所以它可以包含空值,但是远程服务器上的列是不可为空的,所以你不能在那里插入空值。您可以更改远程服务器上的列以使其可以为空,它应该可以解决问题..
    • 在两个表中,所有列的格式都相同,并且仍然出现此错误
    • 那么也许其他一些列不可为空,当您在 [ucmwebservices\SQLEXPRESS].CPM.dbo.fct_Project([CreateDate2]) 中键入 insert 时,它会从 fct_Project 中选择 [CreateDate2]为名为“CreateDate2”的列插入值,对于所有新行,其他列将为空...您可以为所有不可为空的列输入值或更改它们以使其可为空。
    猜你喜欢
    • 2012-08-26
    • 1970-01-01
    • 2023-03-22
    • 2012-12-29
    • 1970-01-01
    • 2012-04-12
    • 2011-02-04
    • 2020-04-20
    • 1970-01-01
    相关资源
    最近更新 更多