如何将表从生产复制到开发?

时间:2014-01-27 14:30:55

标签: sql sql-server tsql sql-server-2012

我正在使用名为SQLDEV01的开发服务器,数据库名称为University,表名为cse.students。在我对表cse.students的工作期间,我丢失了一些行,因此我需要从生产服务器获取所有确切数据。生产服务器名称为SQLPROD01

如何在不使用SSIS的情况下查询获取生产数据?

3 个答案:

答案 0 :(得分:3)

在从SSMS执行以下操作之前,从开发服务器到生产服务器设置链接服务器。所有代码都应该在开发服务器上执行。

http://technet.microsoft.com/en-us/library/ms188279.aspx

-- On Development server [SQLDEV01]
TRUNCATE TABLE [University].[cse].[students];
GO

-- Use link server to move data
INSERT INTO 
    [University].[cse].[students] 
SELECT 
    *
FROM 
    [SQLPROD01].[University].[cse].[students] 
GO

这假设目标上没有标识列。

如果您有标识列,请在执行上述插入之前/之后打开/关闭允许插入。

-- Before Insert, execute this statement
SET IDENTITY_INSERT [University].[cse].[students] ON
GO


-- After Insert, execute this statement
SET IDENTITY_INSERT [University].[cse].[students] OFF
GO

您还可以使用OPENROWSET命令创建临时连接。

http://technet.microsoft.com/en-us/library/ms190312.aspx

INSERT INTO 
    [University].[cse].[students] 
SELECT 
    PRD.*
FROM 
    OPENROWSET('SQLNCLI', 'Server=SQLPROD01;Trusted_Connection=yes;',
    'SELECT * FROM [University].[cse].[students]') AS PRD;

我没有检查您的环境的语法,请检查。

如果将临时查询设置为关闭(0),请让DBA暂时将它们打开(1)。在生产服务器上执行以下操作。

http://msdn.microsoft.com/en-us/library/ms187569.aspx

-- Show all settings
sp_configure 'show advanced options', 1;
RECONFIGURE;
GO

-- What is the current setting?
sp_configure 
GO

-- Allow add hoc queries    
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO

如果(s)他不允许这样做,你就会被物理链接服务器困住。

如果您使用委派 - 选项#3,则必须注意双跃点问题。

http://blogs.msdn.com/b/sql_protocols/archive/2006/08/10/694657.aspx

我会将链接服务器配置为具有选择数据权限的生产中的特定帐户。见选择#4。

enter image description here

答案 1 :(得分:1)

请使用此查询通用查询替换您的条目

从[sourceserver]中选择* into targetTable。[sourcedatabase]。[dbo]。[sourceTable]

答案 2 :(得分:1)

有几种方法可以做到这一点。一个非常安全的是以下内容:

在Microsoft SQL Management Studio中,展开源服务器的服务器节点 - 然后展开“数据库”节点。右键单击源数据库,然后选择任务 - >生成脚本。弹出对话框后单击“下一步”。选择“选择特定数据库对象”单选按钮。展开“表”节点,检查要复制的表。单击底部的下一个按钮。单击高级按钮。在弹出Script DROP和CREATE的选项中,选择右侧的Script DROP和CREATE。对于选项数据类型,脚本选择右侧的模式和数据。单击确定。现在回到主对话框,您需要选择“保存到剪贴板”或“保存到新查询窗口”。我通常选择剪贴板,因为我经常去不同的服务器,但选择最适合你的服务器。点击下一步。再次单击“下一步”,脚本将根据您的选择生成。现在只需在目标数据库上运行该脚本。

enter image description here